#include <iostream>
#include <string>

using namespace std;

class my_class
{
public:
    int n;
    int * ptr;
public:
    my_class()
    {
        
    }
    my_class(my_class & c)
    {
        n = c.n;
        ptr = new int(*c.ptr);
    }
    ~my_class()
    {
        
    }
};

/*
浅拷贝 不通过拷贝构造函数的方式 就是浅拷贝
深拷贝 通过拷贝构造函数
*/

int main(int argc, char const *argv[])
{
    my_class c1;
    c1.n = 100;
    c1.ptr = new int(80);

    // 这一步 会自动调用拷贝构造函数
    my_class c2(c1);

    *c2.ptr = 200;

    cout << c1.n << endl;
    cout << c1.ptr << endl;
    cout << *c1.ptr << endl;

    cout << c2.n << endl;
    cout << c2.ptr << endl;
    cout << *c2.ptr << endl;
    
    return 0;
}
